// 引入路由和storage工具函数
import storage from '@/utils/storage'
import store from '@/store'
import router from '../router/index.js'

// 路径相关
let base = "/mall-ui"
let loginUrl = base + '/login';
let publicUrl = base + '/public';
// 长时间未操作
let lastTime = new Date().getTime()
let currentTime = new Date().getTime()
let timeOut = 30 * 60 * 1000 //设置超时时间: 30分钟
// 刷新token
let tokenLastTime = new Date().getTime()
let tokenCurrentTime = new Date().getTime()
let tokenTimeOut = 25 * 60 * 1000 //设置超时时间: 25分钟

window.onload = function () {
  window.document.onmousedown = function () {
    if (window.location.pathname !== loginUrl && window.location.pathname.split('_')[0] !== publicUrl) {
      storage.setItem("lastTime", new Date().getTime())
    }
  }

  // 刷新页面重现开启定时器
  let isLogin = storage.getItem('isLogin')
  if (isLogin && window.location.pathname !== loginUrl && window.location.pathname.split('_')[0] !== publicUrl) {
    window.timerTimeOut = window.setInterval(checkTimeout, 30000)
    window.timerToken = window.setInterval(checkToken, 30000)
  }

}

// 定时器执行函数 （长时间为操作）
async function checkTimeout() {
  // console.log('进入检测checkTimeout')
  let path = window.location.pathname
  if (path !== loginUrl && path.split('_')[0] !== publicUrl) {
    // console.log('允许检测checkTimeout')
    currentTime = new Date().getTime() //更新当前时间
    lastTime = storage.getItem("lastTime")
    // console.log('检查是否长时间未操作', currentTime - lastTime > timeOut)
    if (currentTime - lastTime > timeOut) { //判断是否超时
      // 调用退出登录
      await store.dispatch('user/logout')
      // 获取当前地址
      let url = window.location.origin
      url += loginUrl
      // 跳到登陆页
      window.location.href = url
    }
  }
}

// 定时器执行函数 （定时刷新token）
function checkToken() {
  // console.log('进入检测checkToken')
  let path = window.location.pathname
  if (path !== loginUrl && path.split('_')[0] !== publicUrl) {
    // console.log('允许检测checkToken')
    tokenCurrentTime = new Date().getTime() //更新当前时间
    tokenLastTime = storage.getItem("tokenLastTime")
    // console.log('检查Token是否需要刷新', tokenCurrentTime - tokenLastTime > tokenTimeOut)
    if (tokenCurrentTime - tokenLastTime > tokenTimeOut) { //判断是否超时
      // 调用刷新Token
      store.dispatch('user/refreshToken')
    }
  }
}

export default function () {
  // console.log('开启定时器')
  window.timerTimeOut = window.setInterval(checkTimeout, 30000)
  window.timerToken = window.setInterval(checkToken, 30000)
}
